home *** CD-ROM | disk | FTP | other *** search
/ Mac Format 1994 October / Macformat17.cdr / Shareware City / Developers / CPreferences Folder / CPreferences.cp < prev    next >
Text File  |  1994-01-20  |  3KB  |  119 lines

  1. // CPreferences.cp 1.0
  2. // Created by Richard A. Bray
  3. // ©1994 Compu-Phobic, Inc.
  4.  
  5. #include "CPreferences.h"
  6. #include "LFile.h"
  7. #include <Folders.h>
  8.  
  9. //----------------------------------
  10. // CPreferences default constructor
  11. //    This will create a preference file named "Default Prefs" with
  12. //    a creator of "????" in the Preferences folder.
  13. //----------------------------------
  14. CPreferences::CPreferences() 
  15. {
  16.     FSSpec    *spec, theSpec;
  17.     OSErr    fsErr;
  18.     Handle    prefs;
  19.     
  20.     mCreator = '????';
  21.     spec = &theSpec;
  22.     fsErr = FindFolder(kOnSystemDisk, 'pref',
  23.                     kCreateFolder, &(spec->vRefNum), &(spec->parID) );
  24.     fsErr = FSMakeFSSpec(spec->vRefNum, spec->parID, "\pDefault Prefs", spec);
  25.     prefFile = new LFile(theSpec);
  26.     
  27.     if(fsErr == fnfErr) {
  28.         CreateDefaultPreference();
  29.     }
  30. }
  31.  
  32. //----------------------------------
  33. // CPreferences constructor
  34. //    This will create a preference file named 'inName' with
  35. //    a creator of 'inCreator' in the Preferences folder.
  36. //----------------------------------
  37. CPreferences::CPreferences(OSType inCreator, ConstStr255Param inName)
  38. {
  39.     FSSpec    *spec, theSpec;
  40.     OSErr    fsErr;
  41.     Handle    prefs;
  42.     
  43.     mCreator = inCreator;
  44.     spec = &theSpec;
  45.     fsErr = FindFolder(kOnSystemDisk, 'pref',
  46.                     kCreateFolder, &(spec->vRefNum), &(spec->parID) );
  47.     fsErr = FSMakeFSSpec(spec->vRefNum, spec->parID, inName, spec);
  48.     prefFile = new LFile(theSpec);
  49.     
  50.     if(fsErr == fnfErr) { 
  51.         CreateDefaultPreference();
  52.     }
  53. }
  54.  
  55. //----------------------------------
  56. // CPreferences default destructor
  57. //    delete file object and any other handles.
  58. //----------------------------------
  59. CPreferences::~CPreferences(void)
  60. {
  61.     delete prefFile;
  62. }
  63.  
  64. //----------------------------------
  65. // LoadPreferences
  66. //    Load preferences data from file.
  67. //----------------------------------
  68. void CPreferences::LoadPreferences()
  69. {
  70.     Int32    count = sizeof(Preference);
  71.     Handle    prefs;
  72.         
  73.     prefFile->OpenDataFork(fsCurPerm);
  74.     prefs = prefFile->ReadDataFork();
  75.     prefFile->CloseDataFork();
  76.     
  77.     // set mPrefs to point to handle
  78.     mPrefs = **(Preference**)prefs;
  79.     DisposHandle(prefs);
  80. }
  81.  
  82. //----------------------------------
  83. // SavePreferences
  84. //    Write data to file
  85. //----------------------------------
  86. void CPreferences::SavePreferences()
  87. {
  88.     prefFile->OpenDataFork(fsCurPerm);
  89.     prefFile->WriteDataFork(&mPrefs, sizeof(Preference));
  90.     prefFile->CloseDataFork();
  91. }
  92.  
  93. //----------------------------------
  94. // CreateDefaultPreference
  95. //    Create preference file with default values from 
  96. //  'pref' resource in application.
  97. //----------------------------------
  98. void
  99. CPreferences::CreateDefaultPreference(void)
  100. {
  101.     Handle prefs;
  102.     // If the preference file does not exist, then load the
  103.     //  'pref' resource in the application's resource fork.
  104.     //  Use that as the default data for a new preference file.
  105.     prefFile->CreateNewFile(mCreator, 'pref', -1);
  106.     prefs = GetResource('pref', 128);
  107.     mPrefs = **(Preference**)prefs;
  108.     ReleaseResource(prefs);
  109.     SavePreferences();
  110. }
  111.  
  112. //----------------------------------
  113. // GetPreferences
  114. //    Load preferences data from file.
  115. //----------------------------------
  116. void CPreferences::GetPreferences(Preference &ioPrefs)
  117. {
  118.     ioPrefs = mPrefs;
  119. }